package tempest.data;
import java.util.Iterator;
import tempest.primitives.*;

public class DataCollection extends Data

{
  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  protected HashList collection;

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  public DataCollection(String s)    { this(new MudString(s));         }
  public MudString value()           { return new MudString("");       }
  public void setValue(MudString s)  { return;                         }
  public Iterator <Data> iterator()  { return collection.iterator();   }
  public Data get(String objName)    { return collection.get(objName); }
  public Data get(MudString objName) { return collection.get(objName); }
  public int size()                  { return collection.size();       }

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  public DataCollection(MudString collectionName)

  {
    dataID = COLLECTION;
    name = collectionName;
    collection = new HashList(51);
  }

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  public void add(Data data)

  {
    super.add(data);
    collection.add(data.name(), data);
  }

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  public void remove(Data data)

  {
    super.remove(data);
    collection.remove(data.name());
  }

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////

  public Data clone()

  {
    DataCollection newCollection = new DataCollection(name);

    for (Data data : collection)
      newCollection.add(data.clone());

    return newCollection;
  }

  /////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////
}